// linked_stack
#ifndef STACK_H
#define STACK_H

#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

// 栈的一个结点栈帧,类型定义
typedef struct stack_node {
	char data[1024];
	struct stack_node *next;
}Stack;

typedef struct {
	Stack *top;	// 栈顶指针
}LinkedStack;

// 基本操作
// 创建链式栈
LinkedStack *stack_create();
// 销毁链式栈
void stack_destroy(LinkedStack *stack);
// 判空
bool stack_is_empty(const LinkedStack *stack);
// 入栈
void stack_push(LinkedStack *stack, const char *data);
// 出栈并返回栈顶元素, 返回-1为空栈
int stack_pop(LinkedStack *stack, char *data);
// 访问栈顶元素
char *stack_peek(const LinkedStack *stack);

#endif



